#ifndef IMGIFSC_H_INCLUDED
#define IMGIFSC_H_INCLUDED

#include <stdio.h>
#include <stdlib.h>

struct Img {
 int width;
 int height;
 int maxgray;
 int *data;
};

void invertImg(struct Img *img);
void scale255Img(struct Img *img);
int is255Img(const struct Img *img);
void thresholdImg(struct Img *img, int thres, int a0, int a1);
void setContrastImg(struct Img *img, float fc);
void setBrightnessImg(struct Img *img, float fb);
void computeHistogram(const struct Img *img, int *histogram);
void createImgFromHistogram(struct Img *img, const int *histogram);
void getMinMaxImg(const struct Img *img, int *min, int *max);
void autoContrastImg(struct Img *img);
void fillImg(struct Img *img, const int value, const int maxgray);
void blendImg(struct Img *imNew, const struct Img *imBG, const struct Img *imFG, const float alpha);

int TESTinvertImg(void);
int TESTscale255Img(void);
int TESTis255Img(void);
int TESTthresholdImg(void);
int TESTsetContrastImg(void);
int TESTsetBrightnessImg(void);
int TESTcomputeHistogramImg(void);
int TESTcreateImgFromHistogram(void);
int TESTgetMinMaxImg(void);
int TESTautoContrastImg(void);
int TESTfillImg(void);
int TESTblendImg(void);

#endif // IMGIFSC_H_INCLUDED
